15–212: Principles of Programming Basic Computability Theory

نویسنده

  • Michael Erdmann
چکیده

Computers can be programmed to perform an impressive variety of tasks, ranging from numerical computations to natural language processing. The computer is surely one of the most versatile tools ever devised, playing a critical role in solving all manner of “real world” problems. Some would argue that computers can solve any problem that a human can solve; some would argue the opposite; and some regard the question as irrelevant. Whatever view one adopts, it is still interesting to consider whether there are any limits to what can be solved by a computer. Any given computer has only a finite memory capacity, so certainly there are problems that are too large for it to solve. We abstract away from these limitations, and consider the question of what can be solved by an ideal computing device, one which is not limited in its memory capacity (but is still required to produce an answer in a finite amount of time). Computability theory is concerned with exploring the limitations of such idealized computing devices. Complexity theory (which we shall not study here) is concerned with calibrating the resources (both time and space) required to solve a problem. Our treatment of computability theory is based on problems pertaining to ML programs. We begin by considering questions about ML functions such as “does the function f yield a value when applied to an input x?” or “are functions f and g equal for all inputs?”. It would be handy to build a debugging package that included ML programs to answer these (and related) questions for us. Can such a package be built? You may well suspect that it cannot, but how does one prove that this suspicion is well-founded? We then go on to consider questions about ML programs (presented as values of a datatype representing the abstract syntax of ML). The difference lies in the fact that in ML functions are “black boxes” — we can apply them to arguments, but we can’t look inside the box. “Of course,” you might think, “one can’t test convergence of a function on a given input, but what if it were possible to look at the code of the function? What then? Maybe then one can decide convergence on a given input.” Unfortunately (or fortunately, depending on your point of view), the problem remains undecidable. ∗Modified from a draft by Robert Harper, 1997.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Introduction to Computability Theory

These are notes for a short introductory course on Computability Theory (or recursive function theory). The basic notion of computability is defined in terms of a simple imperative programming language.

متن کامل

15–212: Fundamental Structures of Computer Science II Some Notes on Grammars and Parsing

These notes are intended as a “rough and ready” guide to grammars and parsing. The theoretical foundations required for a thorough treatment of the subject are developed in the Formal Languages, Automata, and Computability course. The construction of parsers for programming languages using more advanced techniques than are discussed here is considered in detail in the Compiler Construction course.

متن کامل

Toward an Intuitive and Interesting Theory Course: the First Step of a Road Map

This paper presents the first step of an attempt in designing intuitive and interesting materials for a theory course. The materials developed cover the AL5 Basic Computability unit of the ACM/IEEE Computing Curricula 2001, and can be used in a stand-alone theory course. This paper describes a “programming approach” to basic computability. Topics include a proof of the Halting Problem and the u...

متن کامل

A domain - theoretic approach to computabilityon the real line 1

In recent years, there has been a considerable amount of work on using continuous domains in real analysis. Most notably are the development of the generalized Riemann integral with applications in fractal geometry, several extensions of the programming language PCF with a real number data type, and a framework and an implementation of a package for exact real number arithmetic. Based on recurs...

متن کامل

Separating the basic logics of the basic recurrences

This paper shows that, even at the most basic level (namely, in combination with only ¬,∧,∨), the parallel, countable branching and uncountable branching recurrences of computability logic validate different principles. MSC: primary: 03B47; secondary: 03B70; 68Q10; 68T27; 68T15.

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010